\hypertarget{class_systematic_robot}{
\section{SystematicRobot Class Reference}
\label{class_systematic_robot}\index{SystematicRobot@{SystematicRobot}}
}


{\ttfamily \#include $<$SystematicRobot.hpp$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_systematic_robot_ac6777138ed80b837484dbb90648e7b8f}{SystematicRobot} ()
\item 
virtual \hyperlink{class_systematic_robot_a654fbc9c376e91c06d5a0b05a9736198}{$\sim$SystematicRobot} ()
\item 
\hypertarget{class_systematic_robot_abcb799ee3939531d097b7097516a0547}{
virtual void {\bfseries StartCompetition} ()}
\label{class_systematic_robot_abcb799ee3939531d097b7097516a0547}

\item 
virtual void \hyperlink{class_systematic_robot_ab52c5dcca0d153bd142a7ba31d9f6488}{Initialize} ()
\item 
const std::set$<$ \hyperlink{class_robot_subsystem}{RobotSubsystem} $\ast$ $>$ \& \hyperlink{class_systematic_robot_ad494737f8f5db5937faccc415e23baa0}{GetSubsystems} ()
\item 
void \hyperlink{class_systematic_robot_a275212f2365697c5ee7e49d9f23ff96a}{AddSubsystem} (\hyperlink{class_robot_subsystem}{RobotSubsystem} \&subsystem)
\item 
void \hyperlink{class_systematic_robot_a62f144ef5887ce42cd73e845b30f018a}{AddSubsystem} (\hyperlink{class_robot_subsystem}{RobotSubsystem} $\ast$subsystem)
\item 
const std::set$<$ \hyperlink{class_robot_controller}{RobotController} $\ast$ $>$ \& \hyperlink{class_systematic_robot_ab9b5dfca07bda6f6b49cf8d9c6de502a}{GetControllers} ()
\item 
void \hyperlink{class_systematic_robot_a37074618b5d9ed5d46ffa024753c54cb}{AddController} (\hyperlink{class_robot_controller}{RobotController} \&controller)
\item 
void \hyperlink{class_systematic_robot_a8a4958a97543ad13138df20a92a82f72}{AddEnabledController} (\hyperlink{class_robot_controller}{RobotController} \&controller)
\item 
void \hyperlink{class_systematic_robot_a009a5ac01d630231da9a2c6465c72bf2}{SetAutonomousController} (\hyperlink{class_robot_controller}{RobotController} \&controller)
\item 
void \hyperlink{class_systematic_robot_a305da14a7268fa2ca5dc10222b4604d3}{SetTeleopController} (\hyperlink{class_robot_controller}{RobotController} \&controller)
\item 
double \hyperlink{class_systematic_robot_a1906802e28c2223dea24605a5153afde}{GetPeriod} ()
\item 
void \hyperlink{class_systematic_robot_a34a2e37910d74c59d3e501571af651b2}{SetPeriod} (double period)
\item 
double \hyperlink{class_systematic_robot_aef15b2c39270266c328205923c33e6f4}{GetLoopsPerSec} ()
\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
static const double \hyperlink{class_systematic_robot_a44bfb4d5c12753c430f8f953dd10b414}{sDefaultPeriod} = 0.0
\end{DoxyCompactItemize}


\subsection{Detailed Description}
The \hyperlink{class_systematic_robot}{SystematicRobot} class holds all the controllers and subsystems and calls them when necessary.

\hyperlink{class_systematic_robot}{SystematicRobot} is a cooler version of IterativeRobot.

To use it, create a subclass and override the Initialize function. In Initialize, add the subsystems and controllers of your robot. Be sure to add an autonomous and a teleop controller that will activate and deactivate the other controllers when necessary. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_systematic_robot_ac6777138ed80b837484dbb90648e7b8f}{
\index{SystematicRobot@{SystematicRobot}!SystematicRobot@{SystematicRobot}}
\index{SystematicRobot@{SystematicRobot}!SystematicRobot@{SystematicRobot}}
\subsubsection[{SystematicRobot}]{\setlength{\rightskip}{0pt plus 5cm}SystematicRobot::SystematicRobot (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_ac6777138ed80b837484dbb90648e7b8f}
Constructor for \hyperlink{class_systematic_robot}{SystematicRobot}. \hypertarget{class_systematic_robot_a654fbc9c376e91c06d5a0b05a9736198}{
\index{SystematicRobot@{SystematicRobot}!$\sim$SystematicRobot@{$\sim$SystematicRobot}}
\index{$\sim$SystematicRobot@{$\sim$SystematicRobot}!SystematicRobot@{SystematicRobot}}
\subsubsection[{$\sim$SystematicRobot}]{\setlength{\rightskip}{0pt plus 5cm}SystematicRobot::$\sim$SystematicRobot (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{class_systematic_robot_a654fbc9c376e91c06d5a0b05a9736198}
Destructor for \hyperlink{class_systematic_robot}{SystematicRobot}. 

\subsection{Member Function Documentation}
\hypertarget{class_systematic_robot_a37074618b5d9ed5d46ffa024753c54cb}{
\index{SystematicRobot@{SystematicRobot}!AddController@{AddController}}
\index{AddController@{AddController}!SystematicRobot@{SystematicRobot}}
\subsubsection[{AddController}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::AddController (
\begin{DoxyParamCaption}
\item[{{\bf RobotController} \&}]{controller}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a37074618b5d9ed5d46ffa024753c54cb}
Add another \hyperlink{class_robot_controller}{RobotController}.


\begin{DoxyParams}{Parameters}
{\em controller} & The controller to add to the robot. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_a8a4958a97543ad13138df20a92a82f72}{
\index{SystematicRobot@{SystematicRobot}!AddEnabledController@{AddEnabledController}}
\index{AddEnabledController@{AddEnabledController}!SystematicRobot@{SystematicRobot}}
\subsubsection[{AddEnabledController}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::AddEnabledController (
\begin{DoxyParamCaption}
\item[{{\bf RobotController} \&}]{controller}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a8a4958a97543ad13138df20a92a82f72}
Add a \hyperlink{class_robot_controller}{RobotController} to be activate when and only when the robot is enables.


\begin{DoxyParams}{Parameters}
{\em controller} & The controller to add to the robot. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_a62f144ef5887ce42cd73e845b30f018a}{
\index{SystematicRobot@{SystematicRobot}!AddSubsystem@{AddSubsystem}}
\index{AddSubsystem@{AddSubsystem}!SystematicRobot@{SystematicRobot}}
\subsubsection[{AddSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::AddSubsystem (
\begin{DoxyParamCaption}
\item[{{\bf RobotSubsystem} $\ast$}]{subsystem}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a62f144ef5887ce42cd73e845b30f018a}
Add another \hyperlink{class_robot_subsystem}{RobotSubsystem}.


\begin{DoxyParams}{Parameters}
{\em subsystem} & The subsystem to add to the robot. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_a275212f2365697c5ee7e49d9f23ff96a}{
\index{SystematicRobot@{SystematicRobot}!AddSubsystem@{AddSubsystem}}
\index{AddSubsystem@{AddSubsystem}!SystematicRobot@{SystematicRobot}}
\subsubsection[{AddSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::AddSubsystem (
\begin{DoxyParamCaption}
\item[{{\bf RobotSubsystem} \&}]{subsystem}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a275212f2365697c5ee7e49d9f23ff96a}
Add another \hyperlink{class_robot_subsystem}{RobotSubsystem}.


\begin{DoxyParams}{Parameters}
{\em subsystem} & The subsystem to add to the robot. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_ab9b5dfca07bda6f6b49cf8d9c6de502a}{
\index{SystematicRobot@{SystematicRobot}!GetControllers@{GetControllers}}
\index{GetControllers@{GetControllers}!SystematicRobot@{SystematicRobot}}
\subsubsection[{GetControllers}]{\setlength{\rightskip}{0pt plus 5cm}const set$<$ {\bf RobotController} $\ast$ $>$ \& SystematicRobot::GetControllers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_ab9b5dfca07bda6f6b49cf8d9c6de502a}
Returns a set of RobotControllers.

\begin{DoxyReturn}{Returns}
A set of controllers currently in robot. 
\end{DoxyReturn}
\hypertarget{class_systematic_robot_aef15b2c39270266c328205923c33e6f4}{
\index{SystematicRobot@{SystematicRobot}!GetLoopsPerSec@{GetLoopsPerSec}}
\index{GetLoopsPerSec@{GetLoopsPerSec}!SystematicRobot@{SystematicRobot}}
\subsubsection[{GetLoopsPerSec}]{\setlength{\rightskip}{0pt plus 5cm}double SystematicRobot::GetLoopsPerSec (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_aef15b2c39270266c328205923c33e6f4}
Gets the number of periodic loops per second.

Almost exactly like IterativeRobot::GetLoopsPerSec().

\begin{DoxyReturn}{Returns}
The number of periodic loops per second. 
\end{DoxyReturn}
\hypertarget{class_systematic_robot_a1906802e28c2223dea24605a5153afde}{
\index{SystematicRobot@{SystematicRobot}!GetPeriod@{GetPeriod}}
\index{GetPeriod@{GetPeriod}!SystematicRobot@{SystematicRobot}}
\subsubsection[{GetPeriod}]{\setlength{\rightskip}{0pt plus 5cm}double SystematicRobot::GetPeriod (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a1906802e28c2223dea24605a5153afde}
Gets the time between each periodic loop or 0 if it waits until the driver station sends data.

Almost exactly like IterativeRobot::GetPeriod().

\begin{DoxyReturn}{Returns}
The time between each periodic loop or 0 if it waits until the driver station sends data. 
\end{DoxyReturn}
\hypertarget{class_systematic_robot_ad494737f8f5db5937faccc415e23baa0}{
\index{SystematicRobot@{SystematicRobot}!GetSubsystems@{GetSubsystems}}
\index{GetSubsystems@{GetSubsystems}!SystematicRobot@{SystematicRobot}}
\subsubsection[{GetSubsystems}]{\setlength{\rightskip}{0pt plus 5cm}const set$<$ {\bf RobotSubsystem} $\ast$ $>$ \& SystematicRobot::GetSubsystems (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_ad494737f8f5db5937faccc415e23baa0}
Returns a list of RobotSubsystems.

\begin{DoxyReturn}{Returns}
A vector of subsystems currently in robot. 
\end{DoxyReturn}
\hypertarget{class_systematic_robot_ab52c5dcca0d153bd142a7ba31d9f6488}{
\index{SystematicRobot@{SystematicRobot}!Initialize@{Initialize}}
\index{Initialize@{Initialize}!SystematicRobot@{SystematicRobot}}
\subsubsection[{Initialize}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::Initialize (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{class_systematic_robot_ab52c5dcca0d153bd142a7ba31d9f6488}
Your robot's subsystems and controllers should be added here.

Users should override this method to add their robot's subsystems and controllers. \hypertarget{class_systematic_robot_a009a5ac01d630231da9a2c6465c72bf2}{
\index{SystematicRobot@{SystematicRobot}!SetAutonomousController@{SetAutonomousController}}
\index{SetAutonomousController@{SetAutonomousController}!SystematicRobot@{SystematicRobot}}
\subsubsection[{SetAutonomousController}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::SetAutonomousController (
\begin{DoxyParamCaption}
\item[{{\bf RobotController} \&}]{controller}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a009a5ac01d630231da9a2c6465c72bf2}
Set the autonomous controller. There can only be one autonomous controller. Any previous autonomous controller's set will no longer be controlled by systematic robot.


\begin{DoxyParams}{Parameters}
{\em controller} & The autonomous controller for the robot. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_a34a2e37910d74c59d3e501571af651b2}{
\index{SystematicRobot@{SystematicRobot}!SetPeriod@{SetPeriod}}
\index{SetPeriod@{SetPeriod}!SystematicRobot@{SystematicRobot}}
\subsubsection[{SetPeriod}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::SetPeriod (
\begin{DoxyParamCaption}
\item[{double}]{period}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a34a2e37910d74c59d3e501571af651b2}
Set the time between each periodic loop or 0 for it to wait until the driver station sends data.

Almost exactly like IterativeRobot::SetPeriod().


\begin{DoxyParams}{Parameters}
{\em period} & The time between each periodic loop or 0 for it to wait until the driver station sends data. \\
\hline
\end{DoxyParams}
\hypertarget{class_systematic_robot_a305da14a7268fa2ca5dc10222b4604d3}{
\index{SystematicRobot@{SystematicRobot}!SetTeleopController@{SetTeleopController}}
\index{SetTeleopController@{SetTeleopController}!SystematicRobot@{SystematicRobot}}
\subsubsection[{SetTeleopController}]{\setlength{\rightskip}{0pt plus 5cm}void SystematicRobot::SetTeleopController (
\begin{DoxyParamCaption}
\item[{{\bf RobotController} \&}]{controller}
\end{DoxyParamCaption}
)}}
\label{class_systematic_robot_a305da14a7268fa2ca5dc10222b4604d3}
Set the teleop controller. There can only be one teleop controller. Any previous teleop controller's set will no longer be controlled by systematic robot.


\begin{DoxyParams}{Parameters}
{\em controller} & The teleop controller for the robot. \\
\hline
\end{DoxyParams}


\subsection{Member Data Documentation}
\hypertarget{class_systematic_robot_a44bfb4d5c12753c430f8f953dd10b414}{
\index{SystematicRobot@{SystematicRobot}!sDefaultPeriod@{sDefaultPeriod}}
\index{sDefaultPeriod@{sDefaultPeriod}!SystematicRobot@{SystematicRobot}}
\subsubsection[{sDefaultPeriod}]{\setlength{\rightskip}{0pt plus 5cm}const double {\bf SystematicRobot::sDefaultPeriod} = 0.0\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{class_systematic_robot_a44bfb4d5c12753c430f8f953dd10b414}
The default time per period.

Will be 0 if it waits until the driver station sends data. 

The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
C:/Documents and Settings/Sam/My Documents/My Projects/Entech-\/Fpk/Entech-\/Fpk/SystematicRobot.hpp\item 
C:/Documents and Settings/Sam/My Documents/My Projects/Entech-\/Fpk/Entech-\/Fpk/SystematicRobot.cpp\end{DoxyCompactItemize}
